import os
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import *
import yaml
import time

from src.main.page import data_path


from src.main.page.base_page import base_page
from src.main.page.main_page import  Main_page
from src.main.utils import Log_ou


class Login_page(base_page):
    '''
    前置准备：安装selenium
             安装pyYaml


    登录页面：用于登录，进入主页面main
    作用：复用cookie
    功能：保存cookie，判断cookie是否可用，读取cookie
    前置步骤：注册浏览器驱动，打开登录页面，显式等待，直到页面url发现变化（外界扫码登录），获取cookie，保存为yaml文件，记录保存时间。
    后置步骤：读取cookie.yaml文件,判断是否过期，过期则再次回到前置步骤，重新扫码，可用则直接使用并且发送登录请求
    '''


    def login(self):
        Log_ou.info('登录')

        cookie_path = os.path.join(data_path, 'cookie.yaml')


        if self.is_not_file_empty(cookie_path):
            #如果cookie文件存在则读取cookie尝试登录
            self.driver.get('https://work.weixin.qq.com/login')
            try:
                #尝试将cookie存入并且登录
                cookies = self.read_cookie()


                for i in cookies:
                    self.driver.add_cookie(i)

                self.driver.refresh()
                self.jug_is_login()

            except:
                #如果登录失败则将cookie文件清空，重新扫码登录获取cookie
                self.clean_cookie()
                self.login()
        else:
            #cookie文件不存在则老实扫码登录
            self.driver.get('https://work.weixin.qq.com/')
            _login_btn_locate = (By.XPATH, "//*[@class='index_top_operation']/a[1]")
            self.find_ele_is_presence(_login_btn_locate).click()
            self.jug_is_login()
            self.login_get_cookie()

        Log_ou.info('登录成功，进入首页')

        return Main_page(self.driver)





if __name__ == '__main__':
    Login_page().login()
    # login_page().read_cookie()